import { Controller, Get, Post, Request, Query, Body, Param, Headers, Req, Res, HttpCode, Session } from '@nestjs/common';
import { UserService } from './user.service';
import * as svgCaptcha from 'svg-captcha';

@Controller('user')
export class UserController {
    constructor(private readonly userService: UserService) {}

    // 创建验证码   安装 svg-captcha 
    @Get('code')
    createCode(@Req() req, @Res() res, @Session() session){           // @Req 就是 Request, @Res 就是 Response
        // 生成验证码, 一般放在service中 
        const captcha = svgCaptcha.create({
            size: 4,    // 生成几个码，长度  默认4个
            fontSize: 50,   // 字体大小
            width: 100,   // 图片宽度
            height: 40,   // 图片高度
            background: '#cc9966'
        })

        // 往session保存验证码
        // session.code = captcha.text;
        session.code = captcha.text.toLowerCase();  // 转小写

        res.type('svg');   // 返回的类型
        // res.code(200);   // 返回状态码
        // res.send(captcha.data);  // 返回图片
        res.status(200).send(captcha.data); 
    }

    // 创建用户，或者登录时验证验证码
    @Post('login')
    userLogin(@Body() body, @Session() session){
        console.log(body, session);
        if(session.code.toLowerCase() === body.code.toLowerCase()){  // 还需要验证body中的用户名密码
            return {
                code: 200,
                message: '登录成功'
            }
        }else{
            return {
                code: 400,
                message: '验证码错误'
            }
        }
        
        
    }

    // get请求
    // @Get()
    // findAll(@Request() req) {    // @Request可以获取前端传过来的请求参数
    //     // console.log(req);   // 这里面很多api
    //     console.log(req.query.name);
        
    //     return {
    //         code: 200,
    //         message: '请求成功',
    //         data: req.query.name
    //     }
    // }

    @Get()
    findAll(@Query() query) {    // 可以直接写query参数
        console.log(query.name);
        
        return {
            code: 200,
            message: '请求成功',
            data: query.name
        }
    }

    // 动态参数
    // @Get(':id')                    // 动态路由 restful格式   /user/12
    // @HttpCode(500)                  // 设置返回状态码
    // findById(@Request() req) { 
    //     console.log(req.params.id);
        
    //     return {
    //         code: 200,
    //         message: '请求成功',
    //         id: req.params.id
    //     }
    // }
    @Get(':id')                  
    findById(@Param() params, @Headers() headers) { 
        console.log(params.id);
        
        console.log(headers);
        
        return {
            code: 200,
            message: '请求成功',
            id: params.id
        }
    }

    // @Post()
    // createUser(@Request() req) {
    //     console.log(req.body.name);   // post方式 读取body

    //     return {
    //         code: 200,
    //         message: '请求成功',
    //         data: req.body.name
    //     }
    // }

    @Post()
    // createUser(@Body() body) {
    createUser(@Body('name') name) {  // 直接取某一个参数
        // console.log(body.name);   // Body装饰器 直接获取body
        console.log(name);  

        return {
            code: 200,
            message: '请求成功',
            // data: body.name
            data: name
        }
    }
}
